#ifndef __ARRAY_H__
#define __ARRAY_H__
// 头文件内容
#include "head.h"

/**
 * 逻辑结构 顺序表
 * 存储结构 顺序存储
 * 功能 : 用于实现对用户航班信息 的增 删 改 查 判空 清空 销毁 排序 文件写入  文件读取
 */

// 顺序表最大容量
#define MAX_SIZE 100

// 数据对象
typedef struct ticket_data
{
    char order_time[80]; // 下单时间
    int id;              // 航班班次
    char flighttype[20]; // 飞机机型
    char startcity[20];  // 航班起点站
    char arrivecity[20]; // 航班终点站
    int starttime[2];    // 起飞时间 时:分
    int arrivetime[2];   // 到达时间 时:分
    char flytime[20];    // 飞行时间
    int value;           // 票价
    char name[16];      //  用户名
    char cabin[16];    //   舱位
} ticket_data;


// 定义数据关系

typedef struct Sql_list
{
    ticket_data *data;  // 存储数据的地址 --  动态空间
    int len;            // 当前存储的有效数据长度
    int max;            //  顺序表存储的最大值
} Sql_list;

// 声明 数据操作
// 顺序表的创建：
Sql_list *Init_Sql_List();

// 顺序表的插入：
void tail_insert_sqlist(Sql_list *L, ticket_data data);           // 尾插

// 顺序表的删除：
void tail_del_sqlist(Sql_list *L);           // 尾删
void pos_del_sqlist(Sql_list *L, int id, char *name); // 按照航班班次删除

// 顺序表的查找：
void user_order_tickets(Sql_list *L, char *name); // 按值查找
// 按班次查找

// 顺序表的遍历：
void printf_Sql_List(Sql_list *L);
void printf_ticket_data(ticket_data data);//打印一条航班信息数据

// 打印有下单时间的机票信息
void printf_time_ticket(ticket_data data);

// 顺序表的判空：
void IsEmpty_Sql_List(Sql_list *L);

// 顺序表的判满：
void IsFull_Sql_List(Sql_list *L);

// 顺序表的清空：
void Clear_Sql_List(Sql_list *L);

// 顺序表的销毁：
void Destroy_Sql_List(Sql_list **L);

//将用户订单写入到文件
void ticket_data_file_print(Sql_list *list, const char *mode);

// 将用户订单从文件中读取
void ticket_data_file_scanf(Sql_list *list); //  向文件读取航班信息

// 判断用户是否重复购票
int is_buy_ticket(Sql_list *L, int id, char *name);

#endif
